/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Controlador;

import Modelo.Choferes;
import Modelo.Cooperativa;
import Modelo.Listas;
import Vista.Mensajes;
import Vista.JFrameCooperativa;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.LinkedList;

public class ControladorCooperativa implements ActionListener,KeyListener
{

    private JFrameCooperativa formCooperativa;
    private LinkedList<Cooperativa> ListaCp;

    public ControladorCooperativa(LinkedList<Cooperativa> LisCp) 
    {
        ListaCp=LisCp; 
        formCooperativa=new JFrameCooperativa();  
        formCooperativa.agregarListener(this);
        formCooperativa.setVisible(true);
        Enabled(true);
        
     //-------------------------------
        formCooperativa.getTxtRifC().addKeyListener(new KeyAdapter() 
        {
            public void keyTyped(KeyEvent e) 
            {
                rifKeyTyped(e);
            }

            public void keyPressed(KeyEvent e) {

                rifkeyPressed(e);
            }
        });
     //-------------------------------
        formCooperativa.getTxtNombre().addKeyListener(new KeyAdapter() 
        {
            public void keyTyped(KeyEvent e) 
            {
                nombreKeyTyped(e);
            }

            public void keyPressed(KeyEvent e) {

                nombrekeyPressed(e);
            }
        });
     //-------------------------------
        formCooperativa.getTxtTelefonoC().addKeyListener(new KeyAdapter() 
        {
            public void keyTyped(KeyEvent e) 
            {
                telefonoKeyTyped(e);
            }

            public void keyPressed(KeyEvent e) {

                telefonokeyPressed(e);
            }
        });

    }

     //-------------------------------
            // Zona de eventos Typed
     //-------------------------------
    
            private void rifKeyTyped(java.awt.event.KeyEvent evt) 
            {
               String Cadena;
               char Caracter;

               Cadena = formCooperativa.getTxtRifC().getText();
               if (Cadena.length() == 8) 
               {
                   evt.consume();
               } 
               else 
               {
                   Caracter = evt.getKeyChar();

                   if (Caracter == '.') {
                       evt.consume();
                   }

                   if (Caracter < '0' || Caracter > '9') {
                       evt.consume();
                   }
               }
            }


            
            private void nombreKeyTyped(java.awt.event.KeyEvent evt) 
            {
                String Cadena;
                String CarString;
                char Caracter;

                Cadena = formCooperativa.getTxtNombre().getText();
                if (Cadena.length() == 20) 
                {
                    evt.consume();
                } 
                else 
                {
                    Caracter = evt.getKeyChar();

                    CarString = Caracter + "";
                    CarString = CarString.toUpperCase();
                    Caracter = CarString.charAt(0);

                    if (Caracter == ' ') {
                        return;
                    }

                    if (Caracter < 'A' || Caracter > 'Z') {
                        evt.consume();
                    }

                }
            }


            
            private void telefonoKeyTyped(java.awt.event.KeyEvent evt) 
            {
                String Cadena;
                char Caracter;

                Cadena = formCooperativa.getTxtTelefonoC().getText();
                if (Cadena.length() == 11) 
                {
                    evt.consume();
                } 
                else 
                {
                    Caracter = evt.getKeyChar();

                    if (Caracter == '.') 
                    {
                        evt.consume();
                    }

                    if (Caracter < '0' || Caracter > '9') 
                    {
                        evt.consume();
                    }
                }
            }
      //-------------------------------
            // Zona de eventos Pressed
     //-------------------------------           
            private void rifkeyPressed(KeyEvent e) 
            {
                if (e.getSource().equals(formCooperativa.getTxtRifC())) {

                    String Cadena;
                    int PosiCoop;
                    int PosiChofer;
                    Cooperativa coop = new Cooperativa();
                    Choferes chofer = new Choferes();
                    Cadena = formCooperativa.getTxtRifC().getText();

                    if (e.VK_ENTER == e.getKeyCode() && Cadena.length() != 8) 
                    {
                        Mensajes.Aviso("Rif invalido", "");
                        formCooperativa.getTxtRifC().requestFocusInWindow();
                    }
                    if (e.VK_ENTER == e.getKeyCode() && Cadena.length() == 8) 
                        {
                            
                            PosiCoop = ExisteCoop(Cadena);
                            if (PosiCoop >= 0) 
                            {
                                coop = ListaCp.get(PosiCoop);
                                formCooperativa.getTxtNombre().setText(coop.getNombreC());
                                formCooperativa.getTxtTelefonoC().setText(coop.getTelefonoC());

                                Mensajes.Aviso("Chofer ya Existe", "");
                                Limpiar();

                            } 
                            else 
                            {
                                Enabled(true);
                                formCooperativa.getTxtNombre().requestFocusInWindow();

                            }
                        }

                    }
                }            
                private void nombrekeyPressed(KeyEvent e)
                {
                     if (e.VK_ENTER == e.getKeyCode()) 
                     {
                        formCooperativa.getTxtTelefonoC().requestFocusInWindow();
                     }
                }

                private void telefonokeyPressed(KeyEvent e) 
                {
                   if (e.getSource().equals(formCooperativa.getTxtTelefonoC())) 
                    {

                         String Cadena;
                         Cadena = formCooperativa.getTxtRifC().getText();

                         if (e.VK_ENTER == e.getKeyCode() && Cadena.length() != 11) 
                             {
                                 Mensajes.Aviso("Telefono invalido", "");
                                 formCooperativa.getTxtTelefonoC().requestFocusInWindow();

                             }
                     }
                }
      //-------------------------------
            // Zona de eventos
     //------------------------------- 
    @Override
    public void actionPerformed(ActionEvent e) 
    {
        if (e.getSource().equals(formCooperativa.getBtnSalirC())) 
        {
            formCooperativa.dispose();
        }

        if (e.getSource().equals(formCooperativa.getBtnBuscarC())) 
        {
            new ControladorConsulCoop(ListaCp);
        }
        if (e.getSource().equals(formCooperativa.getBtnGuardarC())) 
        {
           Grabar();
        }
        if (e.getSource().equals(formCooperativa.getBtnCancelarC())) 
        {
            Limpiar();
            Enabled(false);
        }
        if (e.getSource().equals(formCooperativa.getBtnSeleccionRutas())) 
        {
          //new ControladorRutaCoop(ListaCp);
        }

    }
      //-------------------------------
            // Existe
     //-------------------------------     
      public int ExisteCoop(String rifCoop) 
    {
        int i = 0, Posi = -1;
        
        Cooperativa coop;
        String RifLista;

       for (i = 0; i < ListaCp.size(); i++) 
        {
            coop = ListaCp.get(i);

            RifLista = coop.getRifC();

            if (RifLista.equals(rifCoop)) 
            {
                Posi = i;
                return Posi;
            }

        }

        return Posi;
    }
      //-------------------------------
            // Grabar
      //------------------------------- 
      private void Grabar() 
      {
        Cooperativa coop = new Cooperativa();
        Choferes choferes = new Choferes();
        String Cadena;

        Cadena = formCooperativa.getTxtRifC().getText();
        if (Cadena.length() == 0) {
            Mensajes.Aviso("Rif Vacia", "");
            formCooperativa.getTxtRifC().requestFocusInWindow();
            return;
        }

        Cadena = formCooperativa.getTxtNombre().getText();
        if (Cadena.length() == 0) {
            Mensajes.Aviso("Nombre Vacio", "");
            formCooperativa.getTxtNombre().requestFocusInWindow();
            return;
        }

        Cadena = formCooperativa.getTxtTelefonoC().getText();
        if (Cadena.length() == 0) {
            Mensajes.Aviso("Telefono vacio", "");
            formCooperativa.getTxtTelefonoC().requestFocusInWindow();
            return;
        }
            if (Cadena.length() !=11) {
            Mensajes.Aviso("Telefono invalido", "");
            formCooperativa.getTxtTelefonoC().requestFocusInWindow();
            return;
            
        }
            
            coop.Cooperativa(formCooperativa.getTxtRifC().getText(), 
                             formCooperativa.getTxtNombre().getText(), 
                             formCooperativa.getTxtTelefonoC().getText());
            
            ListaCp.add(coop);
            Mensajes.Aviso("Cooperativa guardada con exito", "");
            Limpiar();
            Enabled(false);
            formCooperativa.getTxtRifC().requestFocusInWindow();
      }
      
         //-------------------------------
                //Enable
         //-------------------------------
        private void Enabled(boolean Status)
        {
            formCooperativa.getTxtRifC().setEnabled(Status);
            formCooperativa.getTxtNombre().setEnabled(Status);
            formCooperativa.getTxtTelefonoC().setEnabled(Status);
        }

         //-------------------------------
                //Limpiar
         //-------------------------------
        private void Limpiar()
        {
            formCooperativa.getTxtRifC().setText("");
            formCooperativa.getTxtNombre().setText("");
            formCooperativa.getTxtTelefonoC().setText("");
        }

    @Override
    public void keyTyped(KeyEvent e) 
    {
    }

    @Override
    public void keyPressed(KeyEvent e) 
    {
    }

    @Override
    public void keyReleased(KeyEvent e) 
    {
    }

}